perm filename KI.SAI[KI,ALS] blob
sn#094479 filedate 1974-04-04 generic text, type T, neo UTF8
00010 BEGIN "KI"
00020 DEFINE ⊂="COMMENT",CR="'15",LF="'12", CRLF="CR&LF",TB="'11";
00030 ⊂ The master control program for the KI KA KU system. This program
00040 calls on various subroutines to perform the required functions of
00050 a simple speech communication system which can converse with a speaker
00060 after a minimum amount of adaptive learning in a very simple code
00070 involving the principle vowel sounds pronounced following the stop
00080 consonant "K". The hope is that the system can operate over the
00090 telephone in a reasonably noisy environment with a group of perhaps 100
00100 different speakers;
00110
00120 REQUIRE "TRACK[KI,ALS]" LOAD_MODULE;
00125 REQUIRE "KIAUD[KI,ALS]" LOAD_MODULE;
00130 EXTERNAL PROCEDURE TRACK;
00135 EXTERNAL PROCEDURE HEAR;
00137 EXTERNAL PROCEDURE SAY(STRING UTTER);
00140 INTERNAL INTEGER SPX;
00150 INTERNAL INTEGER ARRAY SPOOR[0:6,0:20];
00160 INTEGER CHAN1,CHAN2,I,J,K,L,Z,EOF,BRCHR; BOOLEAN ER;
00170 INTERNAL INTEGER CHAN3;
00180 STRING READ;
00190 INTEGER ARRAY ADSAY,ADHEAR[0:5];
00200
00210 LABEL STARTP;
00220
00230
00540
00550
00560 STRING PROCEDURE HEARIT(STRING EH);
00570 BEGIN "HEARIT"
00580 HEAR;
00590 IF EH="YES" THEN BEGIN "YES"
00600
00610 RETURN("YES");
00620 END "YES" ELSE BEGIN "NO"
00630 OUTSTR("In else branch for a NO answer"&CRLF);
00640 END "NO";
00650 END "HEARIT";
00660
00670 PROCEDURE ASKNAM;
00680 BEGIN "ASK"
00690
00700 OUTSTR("In procedure ASKNAM"&crlf);
00710
00720 END "ASK";
00730
00740
00750
00760 PROCEDURE TABLE;
00770 BEGIN
00780
00790 INTEGER I,J;
00800
00810 OUTSTR(CRLF&TB&"Track output"&crlf&TB&"Sample"&TB&"F1"&TB&"F2"&TB&"F3"
00820 &TB&"A1"&TB&"A2"&TB&"A3"&CRLF);
00830 Z←2500%256;
00840 FOR J←0 STEP 1 UNTIL 20 DO BEGIN
00850 IF SPOOR[1,J]=0 THEN DONE;
00860 OUTSTR(CVS(J)&TB);
00870 FOR I←0 STEP 1 UNTIL 6 DO OUTSTR(CVS(SPOOR[I,J])&TB);
00880 OUTSTR(CRLF);
00890 END;
00900 END;
00910
00920 INTEGER PROCEDURE OPENUP;
00930 BEGIN
00940 INTEGER I; BOOLEAN ER;
00950
00960
00970 I←0; ER←1;
00980 WHILE ER DO BEGIN "GETFIL"
00990 CLOSE(CHAN3); OPEN(CHAN3,"DSK",'10,2,0,0,0,EOF);
01000 LOOKUP(CHAN3,"LISTEN.TMP[KI,ALS]",ER);
01010 I←I+1; IF I=4 THEN OUTSTR("PROGRAM HUNG ON LISTENING, WILL TRY SOME MORE");
01020 IF I=8 THEN DONE "GETFIL";
01030 START_CODE MOVEI 0,1; '047000000031; END;
01040 ⊂ Sleep for 1 more second;
01050 END "GETFIL";
01060 outstr("The file LISTEN should be opened now"&crlf);
01070 IF I≥8 THEN RETURN(1) ELSE RETURN(0);
01080 END;
01090
01100 PROCEDURE SAVEIT(STRING READ);
01110 BEGIN
01120
01130 INTEGER CHAN4,EOF,I,J; BOOLEAN ER;
01140 INTEGER ARRAY NAMES[0:100];
01150
01160 CHAN4←4;
01170 CLOSE(CHAN4); OPEN (CHAN4,"DSK",'10,2,0,0,0,EOF);
01180 LOOKUP(CHAN4,"KILIST.SIX[KI,ALS]",ER);
01190 ARRYIN(CHAN4,NAMES[0],100);
01200 FOR I←0 STEP 1 UNTIL 99 DO IF NAMES[I]=0 THEN DONE;
01210 NAMES[I]←CVSIX(READ);
01220
01230 CLOSE(CHAN4); OPEN(CHAN4,"DSK",'10,0,2,0,0,0);
01240 ENTER(CHAN4,"KILIST.SIX[KI,ALS]",0);
01250 ARRYOUT(CHAN4,NAMES[0],100);
01260 CLOSE(CHAN4);
01270
01280 CLOSE(CHAN3); OPEN(CHAN3,"DSK",'10,1,1,0,0,EOF);
01290 LOOKUP(CHAN3,"LISTEN.TMP[KI,ALS]",0);
01300 CLOSE(CHAN3); RENAME(CHAN3,READ&".SAY",0,0);
01310 RELEASE(CHAN3);
01320 END;
01330
00010 CHAN1←1; CHAN2←2; CHAN3←3; Z←2500%256;
00020 STDBRK(1);
00030
00180
00190 STARTP:
00200
00205 SAY("TEST");
00210 OUTSTR("Ready to say hello."&crlf);
00220 OUTSTR("Actually it will recite SEG1."&CRLF);
00230 SAY("HELLO");
00240 ⊂ HELLO says Hello, This is KIKAKU. Have you talked to me before? ;
00250 ⊂ HEAR;
00260 OPENUP;
00270 TRACK;
00280 TABLE; INCHWL;
00290 ⊂ ASKNAM;
00300
00310
00320 END;